package testDemo1;

public class TestAnimals {
    public static void testFunc(Animals animals) {
        animals.eat();
    }

    public static void main(String[] args) {
        Cat cat = new Cat("miaomiao", 3);
        Dog dog = new Dog("wangcai", 9);
        testFunc(cat);
        testFunc(dog);

        //向上转型：出现在testFunc 方法中通过参数的传递体现的向上转型 方法需要Animals但我们实际上传入了Cat和Dog类
        //方法的重写：在Dog类和Cat类中的eat方法被重写
        //动态绑定：编译的时候调用的是Animals的eat方法 但是实际上调用的是子类的方法 体现了动态绑定
    }
}
